//#include <iostream>
//#include <string>
//#include <cstring>
//using namespace std;
//
//const int N = 3e6 + 10;
//
//int tree[N][62] = { 0 };
//int p[N] = { 0 };
//
//int idx = 0;
//int t, n, q;
//
//int getpath(char c)
//{
//	if (c >= 'a' && c <= 'z')
//		return c - 'a';
//	else if (c >= 'A' && c <= 'Z')
//		return c - 'A' + 26;
//	else
//		return c - '0' + 52;
//}
//
//void insert(string& s)
//{
//	int cur = 0;
//	p[cur] = 0;
//
//	for (auto ch : s)
//	{
//		int path = getpath(ch);
//		if (tree[cur][path] == 0)
//			tree[cur][path] = ++idx;
//		cur = tree[cur][path];
//		p[cur]++;
//	}
//
//}
//
//void find(string& s)
//{
//	int cur = 0;
//	
//	for (auto ch : s)
//	{
//		int path = getpath(ch);
//		if (tree[cur][path] == 0)
//		{
//			cout << 0 << endl;
//			return;
//		}
//		cur = tree[cur][path];
//	}
//	cout << p[cur] << endl;
//}
//
//int main()
//{
//	cin >> t;
//	while (t--)
//	{
//		for (int i = 0; i <= idx; i++)
//		{
//			for (int j = 0; j <= 61; j++)
//			{
//				tree[i][j] = 0;
//			}
//			p[i] = 0;
//		}
//		idx = 0;
//		cin >> n >> q;
//		for (int i = 1; i <= n; i++)
//		{
//			string s;
//			cin >> s;
//			insert(s);
//		}
//
//		for (int i = 1; i <= q; i++)
//		{
//			string s;
//			cin >> s;
//			find(s);
//		}
//	}
//	return 0;
//}



//#include <iostream>
//#include <string>
//using namespace std;
//
//const int N = 1e5 * 50 + 10;
//
//int tree[N][26] = { 0 };
//int p[N] = { 0 };
//int e[N] = { 0 };
//int idx = 0;
//
//int n, m;
//
//void insert(string& s)
//{
//	int cur = 0;
//	p[cur]++;
//
//	for (auto ch : s)
//	{
//		int path = ch - 'a';
//		if (tree[cur][path] == 0)
//			tree[cur][path] = ++idx;
//		cur = tree[cur][path];
//		p[cur]++;
//	}
//
//	e[cur]++;
//}
//
//void find(string& s)
//{
//	int cur = 0;
//	
//	for (auto ch : s)
//	{
//		int path = ch - 'a';
//		if (tree[cur][path] == 0)
//		{
//			cout << "WRONG" << endl;
//			return;
//		}
//		cur = tree[cur][path];
//	}
//
//	if (e[cur] == 1)
//	{
//		cout << "OK" << endl;
//		e[cur] = 2;
//	}
//	else if (e[cur] == 0)
//	{
//		cout << "WRONG" << endl;
//	}
//	else
//	{
//		cout << "REPEAT" << endl;
//	}
//}
//
//int main()
//{
//	cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		string a;
//		cin >> a;
//		insert(a);
//	}
//	cin >> m;
//	for (int i = 1; i <= m; i++)
//	{
//		string a;
//		cin >> a;
//		find(a);
//	}
//	return 0;
//}


#include <iostream>
#include <string>
using namespace std;


const int N = 2000 * 2000 + 10;

int tree[N][26] = { 0 };
int p[N] = { 0 };
int e[N] = { 0 };
int f[N] = { 0 };
int idx = 0;

int n;
string a;

void insert(string& s)
{
	int cur = 0;

	for (auto ch : s)
	{
		int path = ch - 'a';
		if (tree[cur][path] == 0)
		{
			f[cur]++;
			tree[cur][path] = ++idx;
		}
		cur = tree[cur][path];
	}
	f[cur]++;
}

void find(string& s)
{
	int cur = 0;
	bool st = 0;
	int ret = 0;
	bool st2 = 0;
	for (auto ch : s)
	{
		int path = ch - 'a';

		// table
		if (f[cur] == 1 && cur != 0)
		{
			if(st2 == 0)
				ret++;
			st2 = 1;
		}
		else 
		{
			ret++;
			st2 = 0;
		}

		cur = tree[cur][path];
	}


	cout << ret << endl;
}

int main()
{
	cin >> n;
	cin >> a;
	insert(a);
	for (int i = 2; i <= n; i++)
	{
		string s;
		cin >> s;
		insert(s);
	}

	find(a);

	return 0;
}



